<!-- element.offsetWidth; 获取宽度 执行一次回流
 
     函数的方法
   call 改变this指向 会立即执行一次 后面跟参数
   apply 一样改变this 参数用[]数组
   bind 和 call 一样只会不会立即调用   
        
   setTimeout(callback,1000s)：指定时间后执行一段代码（延迟执行）。
   回调函数：
        将一个函数作为一个参数传入另一个函数，另一个函数执行完成后再执行传入的函数。上述代码中，箭头函数被当作参数传入 setTimeout() ，setTimeout() 两秒后执行完毕， 于是开始执行箭头函数，所以我们看到的结果会延迟两秒才输出。
   setInterval()：每隔一段时间执行一段代码（间隔执行）。

   clearTimeout() 用于取消一个定时任务，前提是这个定时任务还没被触发：
   clearInterval() 用于取消循环定时任务，运行以下代码查看效果：
       ！！！子绝父相
   1.静态定位，position:static;是元素的默认的定位方式，简单的地按照文档的普通流动，top和left属性无效。
    2.相对定位，position:relative;元素还是会按照文档的普通流动，但是，top和left属性的值会使得它相对它本来应该的位置作偏移。
    3.绝对定位，position:absolute;元素完全跳出页面布局的普通流动，它会相对于它的第一个非静态定位的祖先而展示。如果没有这样的祖先，则相对于整个文档。
    4.固定定位，position:fixed;元素相浏览器窗口而定位。它会忽略浏览器的滚动条，一直可见的！ 
     {c1，c2} = Array.form()   类数组转换为数组  解构赋值

      data = [{naem:ding,age:21},{name:lu,age:19},{}]
     data.forEach((item,index)=>{     
          快速遍历数组 会按顺序打印   index对应索引
          let {name,age} = item     结构赋值    
     })

     tagName 属性  获取此标签名
     列举/罗举 ： 可以基于for，in循环
     共同api放原型上
     JSON.stringify()
-->

